b48b361
@@ -109,6 +109,9 @@
public class Splitter extends MulticastProcessor implements AsyncProcessor, Trac
     private Iterable<ProcessorExchangePair> createProcessorExchangePairsIterable(final Exchange exchange, final Object value) {
         final Iterator iterator = ObjectHelper.createIterator(value);
         return new Iterable() {
+            // create a copy which we use as master to copy during splitting
+            // this avoids any side effect reflected upon the incoming exchange
+            private final Exchange copy = ExchangeHelper.createCopy(exchange, true);
 
             public Iterator iterator() {
                 return new Iterator() {
@@ -137,7 +140,8 @@
public class Splitter extends MulticastProcessor implements AsyncProcessor, Trac
 
                     public Object next() {
                         Object part = iterator.next();
-                        Exchange newExchange = ExchangeHelper.createCopy(exchange, true);
+                        // create a copy as the new exchange to be routed in the splitter from the copy
+                        Exchange newExchange = ExchangeHelper.createCopy(copy, true);
                         if (part instanceof Message) {
                             newExchange.setIn((Message)part);
                         } else {
